#!/bin/bash

# 百联仓库物流管理系统 - 正式环境状态检查脚本
# 版本: 3.9.0

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

# 日志函数
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

echo "=================================="
echo "百联仓库物流管理系统 - 正式环境状态检查"
echo "版本: 3.9.0"
echo "=================================="

# 检查Java环境
log_info "检查Java环境..."
if command -v java &> /dev/null; then
    JAVA_VERSION=$(java -version 2>&1 | head -n 1 | cut -d'"' -f2)
    log_success "Java版本: $JAVA_VERSION"
    
    if [[ -n "$JAVA_HOME" ]]; then
        log_success "JAVA_HOME: $JAVA_HOME"
    else
        log_warning "JAVA_HOME未设置"
    fi
else
    log_error "Java未安装或不在PATH中"
fi

# 检查Maven环境
log_info "检查Maven环境..."
if command -v mvn &> /dev/null; then
    MAVEN_VERSION=$(mvn -version | head -n 1 | cut -d' ' -f3)
    log_success "Maven版本: $MAVEN_VERSION"
else
    log_error "Maven未安装或不在PATH中"
fi

# 检查MySQL服务
log_info "检查MySQL服务..."
if command -v mysql &> /dev/null; then
    if pgrep -x "mysqld" > /dev/null; then
        MYSQL_PID=$(pgrep -x "mysqld")
        log_success "MySQL运行中 (PID: $MYSQL_PID)"
        
        # 检查端口
        if lsof -i :3306 > /dev/null 2>&1; then
            log_success "MySQL端口3306正常"
        else
            log_warning "MySQL端口3306异常"
        fi
    else
        log_warning "MySQL服务未运行"
    fi
else
    log_warning "MySQL未安装"
fi

# 检查Redis服务
log_info "检查Redis服务..."
if command -v redis-server &> /dev/null; then
    if pgrep -x "redis-server" > /dev/null; then
        REDIS_PID=$(pgrep -x "redis-server")
        log_success "Redis运行中 (PID: $REDIS_PID)"
        
        # 检查端口
        if lsof -i :6379 > /dev/null 2>&1; then
            log_success "Redis端口6379正常"
        else
            log_warning "Redis端口6379异常"
        fi
    else
        log_warning "Redis服务未运行"
    fi
else
    log_warning "Redis未安装"
fi

# 检查Nginx服务
log_info "检查Nginx服务..."
if command -v nginx &> /dev/null; then
    if pgrep -x "nginx" > /dev/null; then
        NGINX_PID=$(pgrep -x "nginx")
        log_success "Nginx运行中 (PID: $NGINX_PID)"
        
        # 检查端口
        if lsof -i :80 > /dev/null 2>&1; then
            log_success "Nginx端口80正常"
        else
            log_warning "Nginx端口80异常"
        fi
    else
        log_warning "Nginx服务未运行"
    fi
else
    log_warning "Nginx未安装"
fi

# 检查百联系统
log_info "检查百联系统..."
BAILIAN_PID=$(pgrep -f "bailian-admin.jar")
if [[ -n "$BAILIAN_PID" ]]; then
    log_success "百联系统运行中 (PID: $BAILIAN_PID)"
    
    # 检查端口
    if lsof -i :8080 > /dev/null 2>&1; then
        log_success "百联系统端口8080正常"
        
        # 检查健康状态
        if command -v curl &> /dev/null; then
            if curl -s http://localhost:8080/actuator/health > /dev/null 2>&1; then
                log_success "百联系统健康检查通过"
            else
                log_warning "百联系统健康检查失败"
            fi
        fi
    else
        log_warning "百联系统端口8080异常"
    fi
    
    # 显示进程信息
    log_info "百联系统进程信息:"
    ps -p $BAILIAN_PID -o pid,ppid,cmd,etime,pcpu,pmem
else
    log_warning "百联系统未运行"
fi

# 检查磁盘空间
log_info "检查磁盘空间..."
DISK_USAGE=$(df -h . | tail -1 | awk '{print $5}' | sed 's/%//')
if [[ $DISK_USAGE -lt 80 ]]; then
    log_success "磁盘使用率: ${DISK_USAGE}%"
else
    log_warning "磁盘使用率: ${DISK_USAGE}% (建议清理)"
fi

# 检查内存使用
log_info "检查内存使用..."
if command -v free &> /dev/null; then
    MEMORY_INFO=$(free -h | grep "Mem:")
    log_info "内存信息: $MEMORY_INFO"
fi

# 检查日志文件
log_info "检查日志文件..."
if [[ -f "logs/bailian.log" ]]; then
    LOG_SIZE=$(du -h logs/bailian.log | cut -f1)
    log_success "日志文件大小: $LOG_SIZE"
    
    # 显示最近的错误日志
    if command -v tail &> /dev/null; then
        ERROR_COUNT=$(tail -100 logs/bailian.log | grep -c "ERROR\|Exception" 2>/dev/null || echo "0")
        if [[ $ERROR_COUNT -gt 0 ]]; then
            log_warning "最近100行日志中有 $ERROR_COUNT 个错误"
        else
            log_success "最近100行日志无错误"
        fi
    fi
else
    log_warning "日志文件不存在"
fi

echo ""
echo "=================================="
log_success "状态检查完成！"
echo "==================================" 